<?php

/**
 * App
 *
 * @package App
 * @subpackage page
 */
require_once 'App.php';

/**
 * * My_Profile_Index
 *
 * <pre>ユーザ情報の登録
 * </pre>
 *
 * @package     App
 * @subpackage  page
 * @author      $Author: moriwaki $
 * @version     $Id: index.php 2008-09-10 moriwaki　$
 */
class My_Profile_Index extends App_Page
{

    /**
     * 認証タイプ
     *
     * @var string
     */
    var $auth = App::AUTH_MEMBER;
    
    /**
     * onInit
     *
     * @param array $args queryString
     * @return void
     * @author moriwaki
     */
    function onInit($args)
    {
        $this->buildForm();
    }

    /**
     * onAction
     *
     * @param arrau $submit POSTデータ
     * @return void
     * @author moriwaki
     */
    function onAction($submit)
    {
        $this->set('submit', $submit);
        $form = BEAR_Form::getInstance();
        if (isset($_POST['mode']) && $_POST['mode'] == 'do') {
            /* アクション実行 */
            $resource = new BEAR_Resource('/user/profile');
            /* POE(Post Once Exactly)で一度しか実行しない */
            $options['poe'] = true;
            $resource->create($submit, $options);

            $this->set('submit', $submit);
            $this->display('action.tpl');
        } else {
            /* 確認画面のためフォームを固める */
            $form->freeze();
            /* 次回のsubmitはアクション実行にする */
            $form->addElement('hidden', 'mode', 'do');
            $this->display('preview.tpl');
        }
    }

    /**
     * フォーム
     * 
     * 他ページからも利用するためstaticメソッドにしています。
     */
    public static function buildForm()
    {
        $form = & BEAR_Form::getInstance();
        $agent = & BEAR_Agent::getInstance();

        if (App::$ua == BEAR_Agent::UA_PC) {
            $size = 30;
        }else{
            $size = 15;
        }
        /* フォームインプットフィールド */
        $form->addElement('text', 'login_pass', 'PC用ログインパスワード', "size={$size} maxlength=20");
        $form->addElement('text', 'nickname', 'ニックネーム', "size={$size} maxlength=255");
        $form->addElement('text', 'mailaddress', 'メールアドレス', "size={$size} maxlength=255");
        $form->addElement('textarea', 'body', '自己紹介');
        $form->addElement('reset', 'reset', 'クリア');
        $form->addElement('submit', '_submit', '登録', '');
        /* フィルタと */
        $form->applyFilter('__ALL__', 'trim');
        $form->applyFilter('__ALL__', 'strip_tags');
        /* 検証ルール */
        $form->addRule('login_pass', 'ログインパスワードを入力してください', 'required', null, '');
        $form->addRule('nickname', 'ニックネームを入力してください', 'required', null, '');
        $form->addRule('mailaddress', 'メイルアドレスを入力してください', 'required', null, '');
        $form->addRule('mailaddress', 'メールアドレスの形式で入力してください', 'email', null, 'client');
        $form->registerRule('mailaddress_check', 'callback', 'mailaddress_check');
        $form->addRule('mailaddress', '既に登録済みです', 'mailaddress_check');
    }
}

/**
 * ログインIDの重複チェック
 *
 * @param string $mailaddress メールアドレス
 * @return boolean
 * @author moriwaki
 */
function mailaddress_check($mailaddress)
{
    $values = array();
    $values['mode'] = 'mailaddress';
    $values['mailaddress'] = $mailaddress;

    $resource = new BEAR_Resource('user/profile');
    $resource->read($values);
    $user = $resource->getResult();

    if($user){
        return false;
    }
    return true;
}

new BEAR_Main('My_Profile_Index');